import axios from "axios";
import {Message} from "element-ui";
import router from '../router'


//
// const instance = axios.create({
// // 基准路径
//   baseURL: 'baseURL_dev',//3、设置开发域名
// //4、 超时时间的设置 ms
//   timeout: 5000,
//   headers:{
//     "Content-Type":"application/json;charset=UTF-8"
//     } //5、携带过去的请求头
//   })
//
// // 6、添加请求拦截器
// instance.interceptors.request.use(
//   config => {
// // 在发送请求之前做些什么
//     //做鉴权token
//     config.headers.Authorization=localStorage.getItem("token") || ""
//     return config //相当于next()放行，config是个对象，里面包含请求的所有信息。
//   },
//   error => {
// // 对请求错误做些什么
//     return Promise.reject(error)
//   }
// )

// axios.defaults.withCredentials = true
const service = axios.create({
  baseURL: process.env.BASE_URL,
  timeout: 30000,
  withCredentials: true // 开启携带token 解决后台获取session的值为null情况
})

// 请求拦截器
service.interceptors.request.use(config => {
  // 存在token 请求头携带
  if (window.sessionStorage.getItem('token')) {
    config.headers['Authorization'] = window.sessionStorage.getItem('token');
  }
  return config;
},error => {
  console.log(error);
})




// 后置拦截 响应拦截器
service.interceptors.response.use(success => {
  // 业务逻辑错误
  if (success.status && success.status === 200) {
    if (success.data.code===500 || success.data.code===401||success.data.code===403){
      Message.error({message:success.data.message});
      return;
    }
    if (success.data.message){
      Message.success({message:success.data.message})
    }
  }
  return success.data;

},error => {
  if (error.response.code === 504 || error.response.code === 404){
    Message.error("服务器错误");
  }else if(error.response.code === 403){
    Message.error("权限不足,请联系管理员")
  }else if(error.response.code === 401){
    console.log("401错误")
    Message.error("尚未登录,请登录");
    router.replace('/');
  }else{
    if (error.response.data.message){
      Message.error({message:error.response.data.message})
    }else {
      Message.error({message:"未知错误！"})
    }
  }
  return;
});

const baseUrl = process.env.BASE_URL;
// const baseUrl = 'http://localhost:8081/';

// export const postRequest = (url,params)=>{
//   return axios({
//     method:'post',
//     url:`${baseUrl}${url}`,
//     data:params
//   })
// }
//
// export const putRequest = (url,params)=>{
//   return axios({
//     method:'put',
//     url:`${baseUrl}${url}`,
//     data:params
//   })
// }
//
// export const gettRequest = (url,params)=>{
//   return axios({
//     method:'get',
//     url:`${baseUrl}${url}`,
//     data:params
//   })
// }
// export const deleteRequest = (url,params)=>{
//   return axios({
//     method:'delete',
//     url:`${baseUrl}${url}`,
//     data:params
//   })
// }

export {baseUrl,service}
